package edu.nf.relaxenjoy.mapper;

import edu.nf.relaxenjoy.domain.entity.Comment;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author zhu
 * @date 2024-12-16
 */
public interface CommentMapper {

    /**
     * 修改评论信息
     * @param comment
     */
    void updateById(Comment comment);

    /**
     * 根据评论id查询
     * @param id 评论id
     * @return
     */
    Comment getById(Long id);

    /**
     * 根据评论id集合批量查询
     * @param ids
     * @return
     */
    List<Comment> listByIds(List<Long> ids);

    /**
     * 根据内容id查询所有的不同评论
     * @param mid 内容id
     * @param pid 评论
     * @return
     */
    List<Comment> getCommentsByMidAndPid(Long mid, Long pid);

    /**
     * 获取该内容下不属于该 pid的评论
     * @param mid
     * @param pid
     * @return
     */
    List<Comment> getTwoCommentsByMidAndPid(Long mid, Long pid);

    /**
     * 查询评论下的所有二级评论
     * @param pid
     * @return
     */
    List<Comment> getCommentsByPid(Long pid);

    /**
     * 分页查询
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<Comment> getPage(@Param("pageNum") Long pageNum, @Param("pageSize") Long pageSize);

    /**
     * 查询用户的所有评论
     * @param uid
     * @return
     */
    List<Comment> getCommentsByUid(Long uid);

    /**
     * 查询所有的回复评论
     * @param replyId
     * @return
     */
    List<Comment> getCommentsByReplyId(Long replyId);

    /**
     * 添加评论信息
     * @param comment
     */
    void insert(Comment comment);

    /**
     * 批量删除评论
     * @param ids
     */
    void removeBatch(List<Long> ids);

    /**
     * 根据评论id删除评论
     * @param id
     */
    void removeById(Long id);
}
